import axios from 'axios'
import { MessageBox, Message } from 'element-ui'
import store from '@/store'
import { getToken, removeToken } from '@/utils/auth'

import router from '@/router'

// create an axios instance
const service = axios.create({
  baseURL: process.env.VUE_APP_BASE_API || '/dev-api',
  timeout: 5000
})


service.interceptors.request.use(
  config => {
    if (store.getters.token) {
      config.headers['authorization'] = getToken()
    }
    return config
  },

  error => {
    return Promise.reject(error)
  }
)


service.interceptors.response.use(
  response => {
      // 如果响应类型是blob，返回完整的响应对象（包含headers）
      if (response.config.responseType === "blob") {
        return response;
      }
      const res = response.data;
      if (res.code !== 200) {
        Message({
          message: res.msg || '操作失败',
          type: "error",
          duration: 3 * 1000,
        });
        return Promise.reject(res.message);
      }
      return res;
  },
  error => {
    console.log("错误：", error);
    const status = error.response?.status;
    if (status === 401 || status === 402) {
      removeToken();
      error.message = status === 401 ? "token校验失败" : "token已过期";
      router.push("/login");
    }
    Message({
      message: error.message,
      type: "error",
      duration: 3 * 1000,
    });
    return Promise.reject(error);
  }
)
export default service
